<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
 * 
 * Controlador encargado de manejar la transaccion con paypal
 */
class FinCompra extends GUARIPOLO_Controller
{

	public function index()
	{
		//datos et recividos
		if(isset($_GET['tx']))
		{
			//procesamiento , conexion, obtencion datos de compra
			$payment_data=$this->process_pdt($_GET['tx']);
		}
		else
		{
			$payment_data=null;
		}
		// si la transaccion se realizo correctamente
		if($payment_data!=null)
		{
			
			
			$ck=1;
			$this->load->database('local');

			$q0=$this->db->query('select * from carro_historico where idUsuarios='.$this->usuario->getIdUsuarios());
			$r0=$q0->result();
			foreach($r0 as $row)
			{
				if(implode("<br>", $payment_data)==$row->pdata)
				{
					$ch=0;
					break;
				}	
			}
			//comprobacion por si se esta replicando la compra ( podria suceder al recargar la pagina y manipular los parametros)
			if($ck==1)
			{
			
			$this->db->query('insert into carro_historico SELECT *,"'.$text=implode("<br>", $payment_data).'" FROM carro where idUsuarios='.$this->usuario->getIdUsuarios());
			$this->db->query('update carro_historico set fecha=now() where carro_historico_id='.$this->usuario->getCarro()->getIdCarro());
			
		
			
			$q=$this->usuario->getCarro()->getAllProductos();
			$productos=$q->result();
			foreach($productos as $producto)
			{
				$q2=$this->db->query('select * from producto_historico where 	producto_historico_id='.$producto->idProductos);
				$r=$q2->row();
				if(!isset($r->producto_historico_id))
				{
					$this->db->query('insert into producto_historico SELECT * from productos where idProductos='.$producto->idProductos);
				}
				$this->db->query('insert into carro_producto_historico SELECT cc_id,idProductos,carro_id,fecha,cantidad from carro_producto
						where carro_id='.$this->usuario->getCarro()->getIdCarro().' and idProductos='.$producto->idProductos);
					
			}
			
			$this->db->query('delete from carro where idUsuarios='.$this->usuario->getIdUsuarios());
			$this->usuario->getCarro()->getIdCarro();
			$this->db->close();
			}
		}
		//carga de vista final ( transaccion correcta )
		$this->load->view('checkout',array('payment_data'=>$payment_data));
		
	
	}
	/**
	 * Realiza la conexion y obtencion de datos con lso parametros recibidos
	 */
	public function process_pdt($tx)
	{
	
		$request = curl_init();
		curl_setopt_array($request, array
				(
						CURLOPT_URL => 'https://www.sandbox.paypal.com/cgi-bin/webscr',
						CURLOPT_POST => TRUE,
						CURLOPT_POSTFIELDS => http_build_query(array
								(
										'cmd' => '_notify-synch',
										'tx' => $tx,
										'at' => 'zKKfuD7LiCULp2oKwPLl17sCsM_DS31f1xXjCap4JEF_oxr2fal0mxeq67W',
								)),
						CURLOPT_RETURNTRANSFER => TRUE,
						CURLOPT_HEADER => FALSE,
						CURLOPT_SSL_VERIFYPEER => FALSE,
						CURLOPT_CAINFO => '/var/www/cert_key_pem.pem',
				));
	
	
		$response = curl_exec($request);
		$status   = curl_getinfo($request, CURLINFO_HTTP_CODE);
	
	
		curl_close($request);
	
	
		if($status == 200 AND strpos($response, 'SUCCESS') === 0)
		{
	
			$response = substr($response, 7);
	
			$response = urldecode($response);
	
			preg_match_all('/^([^=\r\n]++)=(.*+)/m', $response, $m, PREG_PATTERN_ORDER);
			$response = array_combine($m[1], $m[2]);
	
			if(isset($response['charset']) AND strtoupper($response['charset']) !== 'UTF-8')
			{
				foreach($response as $key => &$value)
				{
					$value = mb_convert_encoding($value, 'UTF-8', $response['charset']);
				}
	
				$response['charset_original'] = $response['charset'];
				$response['charset'] = 'UTF-8';
			}
			ksort($response);
			return $response;
		}
	
		return FALSE;
	}


}
?>